package TDAPair;

/**
 * Esta clase asocia dos valores en una dupla (first, second).
 * 
 * 
 * @param <A> Corresponde al tipo de elemento para los elementos en "first".
 * @param <B> Corresponde al tipo de elemento para los elementos en "second".
 */
public class Pair<A, B> {
	
	protected A first;
	protected B second;
	
	/**
	 * Crea una dupla (a, b)
	 * 
	 * @param a El elemento que usa el lugar de "first".
	 * @param b El elemento que usa el lugar de "second".
	 */
	public Pair(A a, B b) {
		first = a; 
		second = b;
	}
	
	/**
	 * Devuelve el elemento que utiliza el lugar de "first".
	 * 
	 * @return El elemento del atributo first.
	 */
	public A getFirst() {
		return first;
	}
	
	/**
	 * Establece a "a" como el elemento que utiliza el lugar "first".
	 * 
	 * @param a Elemento que corresponderá a "first".
	 */
	public void setFirst(A a) {
		first = a;
	}
	
	/**
	 * Devuelve el elemento que utiliza el lugar de "second".
	 * 
	 * @return El elemento del atributo second.
	 */
	public B getSecond() {
		return second;
	}
	
	/**
	 * Establece a "b" como el elemento que utiliza el lugar "second".
	 * 
	 * @param b
	 */
	public void setSecond(B b) {
		second = b;
	}
	
	/**
	 * Devuelve un string que corresponde al formato (first, second).
	 */
	public String toString() {
		return "("+getFirst().toString()+", "+getSecond().toString()+")";
	}
	
}
